import { ref, toRaw } from 'vue';
import { defineStore } from 'pinia';

export const Sm_List = defineStore('zengstore', () => {
    const list = ref([]); // 列表
    const nowplay = ref({}); // 当前播放项
    // 尝试从 localStorage 加载列表数据
    const storedPlaylist = localStorage.getItem('playlist');
    if (storedPlaylist) {
        list.value = JSON.parse(storedPlaylist); // 从 localStorage 加载数据
    }

    // 添加项目到列表
    const addItem = (item, smlist) => {
        // 如果 smlist 是数组，将其所有元素加入 list
        if (Array.isArray(smlist)) {
            list.value.push(...smlist);
        } else {
            // 如果 smlist 是单个对象，直接加入 list
            list.value.push(smlist);
        }

        // 同步更新本地存储
        localStorage.setItem('playlist', JSON.stringify(toRaw(list.value)));

        // 设置当前播放项
        nowplay.value = item;

        // 调用方法将当前播放项移到第一位
        moveToFirst(nowplay.value.id);

    };

    // 移动目标项到数组的第一位
    const moveToFirst = (id: number) => {
        const index = list.value.findIndex((el) => el.id === id); // 根据 id 找到索引
        if (index !== -1) {
            const [target] = list.value.splice(index, 1); // 移除目标项
            list.value.unshift(target); // 添加到数组第一位
        }
    };

    return { list, addItem, nowplay, storedPlaylist };
});
